<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
            $nadalapaevad = array("Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev","Reede","Laupäev","Pühapäev");
           
            //Ülesanne 4, realiseeritud aja mõõtmisega koos. OLEN SELLE VÄLJA KOMMENTEERINUD
            //KUNA TEISE KOODI TULEMUSE NÄGEMISEKS PEAB MUIDU NII KAUA LÕPPU KRUTTIMA, SAMAS ON HEA
            //KUI SEE NÄIDE OLEKS JUST NIMELT ALGUSEPOOLE NÄHA. 
            /*
             * Lugeda tsüklit nii: Iga kord, kui arv on väiksem, kui 200 000, siis
             * mine tsükli blokis olevaid instruktsioone täitma. 
             * Tsükli blokis olevate instruktsioonide
             * lõppemisel suurenda arvu 1 võrra ja vaata, kas ikka on nii, et arv on 
             * väiksem, kui 200 000. Kui on, hakka tsükli blokis olevaid instruktsioone
             * uuesti täitma. Ehk teisisõnu, täida tsükli sisu nii kaua, 
             * kuni arvu suurendamine ei muuda arvu väärtust suuremaks, kui 200 000. 
             * 
             * Antud konkreetsel juhul trüki brauserisse täisarve alates ühest nii kaua välja, 
             * kuni arvu suurendamine ei muuda arvu väärtust suuremaks, kui 200 000.
             */
            /*
            echo '<h2 style="color:red"> Ülesande 4 lahendus </h2>';
            $systeemiMikroaegEnneTesti = microtime(true);
            for ($arv = 1; $arv <= 200000; $arv++)
            {
                echo $arv . ' '; //Tühik pärast iga numbrit
            }
            $systeemiMikroaegParastTesti = microtime(true);
            echo "200 000 arvu genereerimine võttis teie arvutis: " . 
                    ($systeemiMikroaegParastTesti-$systeemiMikroaegEnneTesti) . " sekundit";
             
             */
            
 //----------------------------------------------------------------------------------------           
            //Ülesanne 1.
            /*
             * Täida tsükli blokis olevaid instruktsioone nii mitu korda, kui 
             * palju on massiivis elemente. Massiivi elementide arvu saab teada 
             * funktsiooni count($massiivMidaLugedaVaja) abil. Et massiivi indekseid
             * hakatakse lugema 0-ist saati, siis tuleb elementide arvust 1 ära lahutada, 
             * kuna alustame ka enda loodud indeksi puhul lugemist 0-ist pihta.
             */
            echo '<h2 style="color:red"> Ülesande 1 lahendus </h2>';
            for ($index = 0; $index <= count($nadalapaevad)-1; $index++)
            {
                echo $nadalapaevad[$index] . ' asub massiivis kohal, mille indeks on ' . $index . '<br/>';  
            }
            
            /*
             * foreach tsüklis eraldi indeksite üle arvet ei peeta, seega loon siin indeksi kuvamiseks
             * eraldi muutuja. Väärtustan selle algselt 0-iga, kuna massiivi esimene indeks ongi vaikimisi
             * 0. Seejärel suurendan iga tsükli iteratsioonis enda tekitatud indeksi väärtust.
             *
             * Tsüklit lugeda inglise keeles umbes nii: For each element nadalapaev 
             * from the array called nadalapaevad,
             * do something with this specific element named nadalapaev.
             * 
             * Ehk tee midagi iga nädalaPÄEVAGA (ainsus), mis sisaldub nädalapäevade massiivis (Massiivis on mitu elementi
             * s.t. iga iteratsioon pöördutakse neist ühe juurde ja salvestatakse see meie poolt defineeritud muutujasse
             * Seejärel võime hiljem seda muutuja sisu foreach bloki instruktsioonides oma äranägemise
             * järgi ära kasutada).  
             */
            echo '<p style="color:green">Sama asi foreach tsükliga: </p>';
            $asukohaIndeksNadalapaevadeMassiivis = 0;
            foreach ($nadalapaevad as $nadalapaev)
            {
                echo $nadalapaev . ' asub massiivis kohal, mille indeks on ' . $asukohaIndeksNadalapaevadeMassiivis . '<br/>';
                $asukohaIndeksNadalapaevadeMassiivis++; //iga ring, millal seda lauset täidetakse, suurendatakse muutuja väärtus
            }
            
            //Ka siin loon eelnevale sarnaselt eraldi muutuja, mille abil mingi while tsükli 
            //tingimus valeks muutuks ja selle koodiblokiga ühele poole saadaks. 
            echo '<p style="color:green">Sama asi while tsükliga: </p>';
            $asukohaIndeksNadalapaevadeMassiivisWhileTsykliJaoks = 0;
            while ($asukohaIndeksNadalapaevadeMassiivisWhileTsykliJaoks <= count($nadalapaevad)-1)
            {
                echo $nadalapaevad[$asukohaIndeksNadalapaevadeMassiivisWhileTsykliJaoks] . ' asub massiivis kohal, mille indeks on ' . $asukohaIndeksNadalapaevadeMassiivisWhileTsykliJaoks . '<br/>';
                $asukohaIndeksNadalapaevadeMassiivisWhileTsykliJaoks++; //iga ring, millal seda lauset täidetakse, suurendatakse muutuja väärtus
            }
            
            //Ilma tsükleid kasutamata tuleks sarnase tulemuse saamiseks kirjutada järgmine kood.
            echo '<p style="color:green">Sama asi tsükleid kasutamata: </p>';
            echo $nadalapaevad[0] . 'asub massiivis kohal, mille indeks on 0<br/>';
            echo $nadalapaevad[1] . 'asub massiivis kohal, mille indeks on 1<br/>';
            echo $nadalapaevad[2] . 'asub massiivis kohal, mille indeks on 2<br/>';
            echo $nadalapaevad[3] . 'asub massiivis kohal, mille indeks on 3<br/>';
            echo $nadalapaevad[4] . 'asub massiivis kohal, mille indeks on 4<br/>';
            echo $nadalapaevad[5] . 'asub massiivis kohal, mille indeks on 5<br/>';
            echo $nadalapaevad[6] . 'asub massiivis kohal, mille indeks on 6<br/>';
            
//----------------------------------------------------------------------------------------             
            //Ülesanne 2 lahendus
            //Kasutan sama massiivi, mis eelpool nädalapäevade jaoks loodud
            echo '<h2 style="color:red"> Ülesande 2 lahendus </h2>';
            for ($index = 0; $index <= count($nadalapaevad)-1; $index++)
            {
                /*
                 * Järgnevalt võrdlen, kui esimesel iteratsioonil Esmaspäev ei võrdu Reedega, 
                 * ehk koodis 'Esmaspäev' != Reede, siis väärtustub see tõeseks, sest tõesti 
                 * on ju nii, et esmaspäev ei võrdu reedega. Järgmine iteratsioon on samas 
                 * seisundis massiivi teine element Teisipäev. Ka sel juhul väärtustub if lause tingimus
                 * tõeseks, sest teisipäev ei ole ju tõesti Reede. Kui jõutakse väärtuseni Reede, ehk
                 * "Reede" != "Reede", siis on ju vale, et reede ei võrdu reedega. Ta ju võrdub!
                 * See tähendab, et väide osutub valeks ning if lause koodiblokki täitma ei minda. 
                 * Selle tulemusena väärtust Reede lõpuks ei kuvatagi.
                 */
                if ($nadalapaevad[$index] != "Reede")
                {
                    echo $nadalapaevad[$index] . '<br/>';  
                }
            }
 //----------------------------------------------------------------------------------------           
            //Ülesanne 3
            echo '<h2 style="color:red"> Ülesande 3 lahendus </h2>';
            for ($index = 0; $index <= count($nadalapaevad)-1; $index++)
            {
                // operaator == on võrdlusoperaator, s.t. see annab väärtuse true, ehk 1, kui 
                //võrreldavad asjad on samaväärsed. False, ehk 0, kui võrreldavad väärtused ei ole 
                //samaväärsed. 
                //Kui järgnevatest tingimustest samaväärsed laused leitakse, siis minnakse 
                //mingi if või elseif bloki sisse. Kui aga samaväärseid lauseid ei leita, siis
                //täidetakse else blokki jääv lause. 
                if ($nadalapaevad[$index] == "Esmaspäev")
                {
                    echo  $nadalapaevad[$index] . 'ad on sinised<br/>';  
                }
                elseif ($nadalapaevad[$index] == "Teisipäev")
                {
                    echo $nadalapaevad[$index] . ', nädala lõpuni on veel nii kaua aega :/<br/>';  
                }
                elseif ($nadalapaevad[$index] == "Kolmapäev")
                {
                    echo $nadalapaevad[$index] . ', nädala selgroog on murtud!<br/>';  
                }
                elseif ($nadalapaevad[$index] == "Reede")
                {
                    echo $nadalapaevad[$index] . ', lõpuks ometi on jälle nädalavahetus!<br/>';  
                }
                else 
                {
                    echo $nadalapaevad[$index] . '<br/>';
                }
            }
            
//----------------------------------------------------------------------------------------            
            //Ülesanne 5, 
            /*
             * Ülesanne on mõnevõrra eelduseks maleruudu lahendamiseks. Lihtsamaks
             * tulemuse saamiseks on siin vaja modulaararvutusoperaatorit kasutada. 
             * S.t. ala 10/2=5, ehk jagub täpselt. Ent 10/3=3 jääk 1, s.t. jagub jäägiga.
             * Maleruudul saab nii realiseerida ruudu värve, kui mingi loenduri väärtus
             * on paarisarv, värvi maleruut mustaks, kui paaritu arv, siis värvi maleruut 
             * valgeks (või vastupidi). Paarisarvu kuvamiseks, mis vahemikku 0-1000 jäävad,
             * realiseerib seega järgnev kood:
             */
            echo '<h2 style="color:red"> Ülesande 5 lahendus </h2>';
            for ($arv = 0; $arv <= 1000; $arv++)
            {
                //Ehk iga kord, kui muutujas arv olevat väärtust kahega jagades
                //jääki ei teki, on meil tegemist paarisarvuga, mille tahame välja kuvada
                //s.t. lähme if bloki sisu täitma. Vastasel korral, kui jääb jääk, on 
                //tegu paaritu arvuga ning me ei lähe if bloki sisu täitma, kus arvu
                //brauserisse kuvamise instruktsioonid kirjas on
                if ($arv % 2 == 0)
                {
                    echo $arv . ' ';
                }
            }
            
//----------------------------------------------------------------------------------------             
            echo '<h2 style="color:red"> Ülesande 6 lahendus </h2>';
            /*
             * Põhimõtteks on see, et ühe for tsükli sees on veel teine for tsükkel. 
             * Välimine for tsükkel on vajalik selle jaoks, et tekitada juurde ridu, 
             * sisemine for tsükkel aga selle jaoks, et igale reale veel omakorda 8
             * veergu tekitada. 
             * Algusest näpuga järge ajades toimitakse seega nii: lugejaPaarisJaPaarituteArvudeJaoks
             * on algselt võrdne 0. Lisaks on meil string, mis moodustatud teksti hoidma hakkab. 
             * Minnakse tsüklisse, kuna reaIndeks väärtus on tõesti väiksem, kui seda on 8. 
             * S.t. mõtteliselt tekitati meile rida. 
             * Järgmine rida koodi on juba uus sisemine for tsükkel, mis nüüd mõttelisele 
             * reale + ja - märkide abil reaalseid veerge juurde hakkab lisama (veerg on vasakul paremale, 
             * rida on ülevalt alla). Sisemises tsüklis vaadatakse, kas meie lugeja väärtus on 
             * parasjagu paaris, või siis paaritu arv. 0/2 = 0, mis on paarisarv, seega kuva esimese 
             * veeru väärtuseks o (ehk else blokk). Suurendatakse lugeja väärtust, misjärel saab lugeja enda
             * väärtuseks 1. Nüüd minnakse uuesti tsüklit täitma ja leitakse, et 1/2=jääk 1, s.t. 
             * tegu on paaritu arvuga, mispuhul sisenetakse if blokki ja lisatakse meie maleruudu 
             * stringi muutujale juurde tähis +. 
             * Seda kõike tehakse 8 korda, misjärel minnakse välimisse tsüklisse, kus tekstis
             * <br/> abil rida vahetatakse, misjärel ka välimine tsükkel uuesti 
             * järgmise mõttelise REA tekitab. Sisemine tsükkel hakkab analoogiliselt (ehk samalaadselt)
             * taaskord reale vastavaid veerge paremalt vasakule tekitama. 
             * Lõpuks, kui tsüklid läbi on, kuvame tulemuse brauserisse välja. 
             */
            $lugejaPaarisJaPaarituteArvudeJaoks = 0;
            $stringMalelauaMoodustamiseks = ''; //algselt on väärtus tühi string
            for ($reaIndeks = 0; $reaIndeks < 8; $reaIndeks++)
            {
                for ($veeruIndeks = 0; $veeruIndeks < 8; $veeruIndeks++)
                {
                    if (($lugejaPaarisJaPaarituteArvudeJaoks % 2) == 1) //ehk, kui on paaritu arv
                    {
                        $stringMalelauaMoodustamiseks .= '+';
                    }
                    else
                    {
                        $stringMalelauaMoodustamiseks .= 'o';
                    }
                    $lugejaPaarisJaPaarituteArvudeJaoks++;
                }
                $lugejaPaarisJaPaarituteArvudeJaoks++;
                $stringMalelauaMoodustamiseks .= '<br/>';
                //echo '</br>';
            }
            echo $stringMalelauaMoodustamiseks;
            
            
            
            echo '<p style="color:green"> Ülesande 6 lahendus html tagide ja css abil </p>';
            $chessboardHtmlString = '<table style="border: medium; border-color: #FFFFFF;">';
            $lugeja = 0;
            for ($reaIndeks = 0; $reaIndeks < 8; $reaIndeks++)
            {
                $chessboardHtmlString .= '<tr>';
                for ($veeruIndeks = 0; $veeruIndeks < 8; $veeruIndeks++)
                {
                    if (($lugeja % 2) == 1) //ehk kui on paaritu arv
                    {
                        $chessboardHtmlString .= '<td style="background-color: #FFF5FF; color:red; width:20px; heigth:10px;">+</td>';
                    }
                    else
                    {
                        $chessboardHtmlString .= '<td style="background-color: #000000; color:red; width:20px; heigth:10px;">o</td>';
                    }
                    $lugeja++;
                }
                $lugeja++;
                $chessboardHtmlString .= '</tr>';
            }
            $chessboardHtmlString .= '</table>';
            echo $chessboardHtmlString
        ?>
    </body>
</html>
